package cn.calin.day05.demo48Exception;

import java.io.FileNotFoundException;
import java.io.IOException;

/*
    try...catch:异常处理的第二种方式，自己处理异常
    格式：
        try{
            可能产生异常的代码
        }catch(定义一个异常变量，用来接收try中抛出的异常对象){
            异常的处理逻辑，异常异常对象之后，怎么处理异常对象
            一般在工作中会把异常的信息记录在一个日志中
        }
        ...
        catch(异常类名){

        }
    注意：
        1.try中可能会抛出多个异常对象，那么就可以使用多个catch来处理这些异常对象
        2.如果try中产生了异常，那么就会执行catch中的异常处理逻辑，执行完毕catch中的处理逻辑，继续执行try...catch之后的代码
        如果try中没有产生异常，那么就不会执行catch中的异常处理逻辑，执行完try中的代码，继续执行try...catch之后的代码
 */
public class Demo06Try {
    public static void main(String[] args) {
        try{
            //可能产生异常的代码
            readFile("c:\\a.cxt");//路径没有问题，读取文件
        } catch (FileNotFoundException e) {
            //System.out.println("传递的路径不对");
            /*
                Throwable类中定义了3个异常处理方法
                String getMessage()返回此Throwable 的夹断描述。
                String toString()返回此throwable的详细消息字符串。
                void printStackTrace() Jvm打印异常对象，默认此方法，打印的异常信息最全面
             */
            System.out.println(e.getMessage());//传递文件路径不是”c:\a.txt
            System.out.println(e.toString());//java.io.FileNotFoundException: 传递文件路径不是”c:\a.txt
            e.printStackTrace();
            /*
                java.io.FileNotFoundException: 传递文件路径不是”c:\a.txt
	            at cn.calin.day05.demo48Exception.Demo06Try.readFile(Demo06Try.java:46)
	            at cn.calin.day05.demo48Exception.Demo06Try.main(Demo06Try.java:28)
             */
        }
        System.out.println("代码后续");

    }
    public static void readFile(String fileName)throws FileNotFoundException {
        if (!fileName.equals("c:\\a.txt")) {
            throw new FileNotFoundException("传递文件路径不是”c:\\a.txt");
        }

        System.out.println("代码无误");
        }
    }
